#!/bin/bash

# 这个函数用于检查当前用户是否为root用户
# 参数: 无
# 返回值: 如果是root用户则退出(exit 1), 否则继续执行
check_root_by_uid(){
    # UID是bash的内置环境变量,表示当前用户的用户ID
    # root用户的UID始终为0
    if [ "$UID" -eq 0 ]; then
        # 如果UID为0,说明是root用户在执行脚本
        # 输出错误信息并退出
        echo "You are not allowed to execute this program by UID check!"
        exit 1;
    fi
}

# 这个函数使用id命令检查当前用户是否为root用户
# 参数: 无
# 返回值: 如果是root用户则退出(exit 1), 否则继续执行
check_root_by_id(){
    # id -u 命令返回当前用户的UID
    # root用户的UID始终为0
    if [ "$(id -u)" -eq 0 ]; then
        # 如果用户ID为0,说明是root用户在执行脚本
        # 输出错误信息并退出
        echo "You are not allowed to execute this program by id -u check!"
        exit 1;
    fi
}

# 这个函数使用EUID检查当前用户是否为root用户
# 参数: 无
# 返回值: 如果是root用户则退出(exit 1), 否则继续执行
check_root_by_euid(){
    # EUID是bash的内置环境变量,表示当前用户的有效用户ID
    # root用户的EUID始终为0
    if [ "$EUID" -eq 0 ]; then
        # 如果EUID为0,说明是root用户在执行脚本
        # 输出错误信息并退出
        echo "You are not allowed to execute this program by EUID check!"
        exit 1;
    fi
}

# 这个函数使用whoami命令检查当前用户是否为root用户
# 参数: 无
# 返回值: 如果是root用户则退出(exit 1), 否则继续执行
check_root_by_whoami(){
    # whoami命令返回当前用户的用户名
    # 如果用户名是root,说明是root用户在执行脚本
    if [ "$(whoami)" == "root" ]; then
        # 输出错误信息并退出
        echo "You are not allowed to execute this program by whoami check!"
        exit 1;
    fi
}

# 这个函数显示一个菜单供用户选择要测试的函数
# 参数: 无
# 返回值: 无
show_menu(){
    echo "请选择要测试的函数:"
    echo "1) check_root_by_uid"
    echo "2) check_root_by_id"
    echo "3) check_root_by_euid"
    echo "4) check_root_by_whoami"
    echo "5) 退出"
    read -p "请输入选项 (1-5): " choice

    case $choice in
        1)
            echo "Testing UID method..."
            check_root_by_uid
            ;;
        2)
            echo "Testing id -u method..."
            check_root_by_id
            ;;
        3)
            echo "Testing EUID method..."
            check_root_by_euid
            ;;
        4)
            echo "Testing whoami method..."
            check_root_by_whoami
            ;;
        5)
            echo "退出"
            exit 0
            ;;
        *)
            echo "无效选项"
            show_menu
            ;;
    esac
}

main(){
    # 调用show_menu函数，显示菜单并让用户选择要测试的函数
    show_menu

    # 输出信息，表示当前用户不是root用户，可以执行该程序
    echo "You are not root, you can execute this program."
}

# Check if the script is being sourced or executed
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
    main "$@"
fi